package com.yztstudy.clients.impl;

import com.yztstudy.clients.ProductFeignClient;
import com.yztstudy.entity.Product;
import com.yztstudy.param.ProductCollectParam;
import com.yztstudy.param.ProductIdParam;
import com.yztstudy.param.ProductSaveParam;
import com.yztstudy.utils.R;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.ArrayList;
import java.util.List;

/**
 * 商品服务断开以后的备选方案
 */

@Component
public class ProductHystrixImpl implements ProductFeignClient {

    /**
     * TODO 搜索服务,获取全部商品数据,用于同步到ES服务
     * @return
     */
    @Override
    public List<Product> allList() {
        return null;
    }


    /**
     * TODO 根据商品ID集合查询多个商品
     * @param productCollectParam 商品ID的集合
     * @return
     */
    @Override
    public R productIds(ProductCollectParam productCollectParam) {
        return R.ok("服务已断开!");
    }


    /**
     * TODO 购物车中的商品详情
     * @param productIdParam 商品ID
     * @return
     */
    @Override
    public Product cartDetail(ProductIdParam productIdParam) {
        return null;
    }

    /**
     * TODO 根据商品ID集合来获取多个商品
     * @param productCollectParam 商品ID集合
     * @return
     */
    @Override
    public List<Product> cartList(ProductCollectParam productCollectParam) {
        return new ArrayList<Product>();
    }


    /**
     * TODO 查询某个类别是否有商品
     * @param categoryId 类别ID
     * @return
     */
    @Override
    public Long adminCount(Integer categoryId) {
        return null;
    }


    /**
     * TODO 保存商品
     * @param productSaveParam 要保存的商品
     * @return
     */
    @Override
    public R adminSave(ProductSaveParam productSaveParam) {
        return R.fail("服务已断开!");
    }


    /**
     * TODO 更新商品
     * @param product 商品对象
     * @return
     */
    @Override
    public R adminUpdate(Product product) {
        return R.fail("服务已断开!");
    }


    /**
     * TODO 删除商品
     * @param productId 商品Id
     * @return
     */
    @Override
    public R adminRemove(Integer productId) {
        return R.fail("服务已断开!");
    }
}
